const path = require("path");
const multer = require("multer");
const { UploadError } = require("../utils/errors");

// 存储目标
const targetPath = path.resolve(__dirname, "../public/static/uploads");

// 定义存储文件名和路径
const storage = multer.diskStorage({
    destination: (req, file, cb) => {
        cb(null, targetPath);   // 使用定义好的路径
    },
    filename: (req, file, cb) => {
        // 使用时间戳作为文件名
        cb(null, Date.now() + path.extname(file.originalname));
    }
})

// 定义文件后缀白名单
const whiteList = [".jpg", ".png", ".gif", ".webp", ".bmp"];
const upload = multer({
    storage,    // 应用定义好的存储方式
    fileFilter(req, file, cb) { // 筛选出符合条件的文件
        if (whiteList.includes(path.extname(file.originalname))) {
            cb(null, true);
        }
        else {
            cb(new UploadError("文件格式不正确，必须为图片"));
        }
    },
    limits: {
        fileSize: 1024 * 1024 * 2,    // 限制文件大小
        // fieldNameSize: 100
    }
})

module.exports = upload;